基于Arduino(Mega2560主控芯片)的微流控注射泵(原理图+代码+机械结构)

您所在的位置:网站首页 arduino 2560驱动电机代码 基于Arduino(Mega2560主控芯片)的微流控注射泵(原理图+代码+机械结构)

基于Arduino(Mega2560主控芯片)的微流控注射泵(原理图+代码+机械结构)

2023-10-20 08:34| 来源: 网络整理| 查看: 265

文章目录 1. 前言2.硬件设计2.1电路原理图设计2.2外观结构设计 3.软件设计4.总结 提示:以下是本篇文章正文内容,下面案例可供参考

1. 前言

微流控注射泵作为一种重要的微流体设备,在医学、生物科学和化学实验等领域发挥着关键作用。本文旨在综合讨论微流控注射泵系统的设计与实现,涵盖了电路设计、PCB画板、机械结构和Arduino编写代码等关键领域。通过对这些方面的研究和讨论,我们可以深入了解微流控注射泵系统的原理和应用,并为相关研究和实际应用提供有价值的参考。

2.硬件设计

我们要得到的是三个电机,每一个电机控制一个4出口的电磁阀,三个电机需要单独控制注射器的一个装置。

2.1电路原理图设计

Mega2560实物图 ,选择Mega2560 因为Mega2560的IO口比较多 设计分配IO口比较自由。

在这里插入图片描述 Mega2560引脚表可以参考

https://blog.csdn.net/qq_43419705/article/details/104962808?ops_request_misc=&request_id=&biz_id=102&utm_term=arduino%20mega2560%E5%8E%9F%E7%90%86%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-104962808.nonecase&spm=1018.2226.3001.4187

电路原理图采用立创EDA

1.主控板 在这里插入图片描述 2. 在这里插入图片描述 3.使用mos管控制电磁阀的通断 在这里插入图片描述

4.3组开关控制电机的进出 在这里插入图片描述

5.三个电机 需要两块驱动芯片 在这里插入图片描述

6.12个电磁阀 每组电磁阀一正一负在这里插入图片描述7.电源端子 在这里插入图片描述 最后经过PCB的排布连线,得出电路板。(这里省略)

2.2外观结构设计

在这里插入图片描述 通过3D打印中间的塑料板和螺丝固定注射器 整体由亚克力板和螺柱固定 组成的微流控注射泵

电机采用的是慢速电机,搭配编程可以使速度降低到更低实现微流控。

3.软件设计

整个软件基于Aruino编程 使用的都是最基本的函数和语法。

首先是定义的宏 便于修改

// 电机驱动 #define PWMA 3 #define PWMB 4 #define PWMC 5 #define AIN1 6 #define AIN2 7 #define STBY 8 #define BIN1 9 #define BIN2 10 #define CIN1 11 #define CIN2 12 #define STBY2 13 // 编码器 #define ED1 14 #define E1 2 #define ED2 15 #define E2 18 #define ED3 16 #define E3 19 //电磁阀 #define snva1 22 #define snva2 23 #define snva3 24 #define snva4 25 #define snvb1 26 #define snvb2 27 #define snvb3 28 #define snvb4 29 #define snvc1 30 #define snvc2 31 #define snvc3 32 #define snvc4 33 //开关 #define Ajia 36 #define Ajian 37 #define Bjia 34 #define Bjian 35 #define Cjia 38 #define Cjian 39

在setup里 配置端口的输入输出和一些PWM的启用和电机驱动芯片使能。

void setup() { pinMode(STBY, OUTPUT); pinMode(PWMA, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT); digitalWrite(STBY, LOW); //停止驱动低电平有效 pinMode(STBY2, OUTPUT); pinMode(PWMC, OUTPUT); pinMode(CIN1, OUTPUT); pinMode(CIN2, OUTPUT); digitalWrite(STBY2, LOW); //停止驱动低电平有效 //开关 pinMode(Ajia,INPUT); pinMode(Ajian,INPUT); pinMode(Bjia,INPUT); pinMode(Bjian,INPUT); pinMode(Cjia,INPUT); pinMode(Cjian,INPUT); //电磁阀 pinMode(snva1, OUTPUT); pinMode(snva2, OUTPUT); pinMode(snva3, OUTPUT); pinMode(snva4, OUTPUT); pinMode(snvb1, OUTPUT); pinMode(snvb2, OUTPUT); pinMode(snvb3, OUTPUT); pinMode(snvb4, OUTPUT); pinMode(snvc1, OUTPUT); pinMode(snvc2, OUTPUT); pinMode(snvc3, OUTPUT); pinMode(snvc4, OUTPUT); //电机编码器 pinMode(ED1, INPUT); pinMode(E1, INPUT); pinMode(ED2, INPUT); pinMode(E2, INPUT); pinMode(ED3, INPUT); pinMode(E3, INPUT); Serial.begin(115200);

控制电机运动的代码 这样可以执行电机最基本的运动 1速度 2方向 和 3电机选择

void move(int motor,int speed,int mode) //motor1 AO1 A02 motor2 BO1 B02 motor3 CO1 C02 //speed 用来调pwm波大小 0-255 // mode=0 向后拉 mode=1 往前推 { digitalWrite(STBY, HIGH); digitalWrite(STBY2,HIGH); boolean pin1=HIGH; boolean pin2=LOW; if(!mode) { pin1=LOW; pin2=HIGH; } switch (motor) { case 1: { digitalWrite(AIN1,pin1); digitalWrite(AIN2,pin2); analogWrite(PWMA,speed); break; } case 2: { digitalWrite(BIN1,pin1); digitalWrite(BIN2,pin2); analogWrite(PWMB,speed); break; } case 3: { digitalWrite(CIN1,pin1); digitalWrite(CIN2,pin2); analogWrite(PWMC,speed); break; } } }

这一部分是实现按键控制电机的移动 按下移动 3组开关分别对应控制3个电机的前进后退 增加delay(20)的操作进行按键的消抖

void keycontrol() { if(digitalRead(Ajia)==LOW) { move(1,255,1); delay(20); if(digitalRead(Ajia)==HIGH) move(1,0,1); } if(digitalRead(Ajian)==LOW) { move(1,255,0); delay(20); if(digitalRead(Ajian)==HIGH) move(1,0,0); } if(digitalRead(Bjia)==LOW) { move(2,255,1); delay(20); if(digitalRead(Bjia)==HIGH) move(2,0,1); } if(digitalRead(Bjian)==LOW) { move(2,255,0); delay(20); if(digitalRead(Bjian)==HIGH) move(2,0,0); } if(digitalRead(Cjia)==LOW) { move(3,255,1); delay(20); if(digitalRead(Cjia)==HIGH) move(3,0,1); } if(digitalRead(Cjian)==LOW) { move(3,255,0); delay(20); if(digitalRead(Cjian)==HIGH) move(3,0,0); } }

最后一部分都是电磁阀的控制,这里我把他封装在一起,可以实现自由的控制 这里只拿一组电磁阀举例子。总共以下几种电磁阀的通断,我用二进制的形式进行封装。例如setsnv_a(xxxx)就可以随意的控制哪几个电磁阀通,哪几个电磁阀断。

void setsnv_a(int a)//a电机控制 { switch(a) { case 0000:digitalWrite(snva1,LOW);digitalWrite(snva2,LOW); digitalWrite(snva3,LOW); digitalWrite(snva4,LOW); break; case 0001:digitalWrite(snva1,HIGH);digitalWrite(snva2,LOW); digitalWrite(snva3,LOW); digitalWrite(snva4,LOW); break; case 0010:digitalWrite(snva1,LOW);digitalWrite(snva2,HIGH); digitalWrite(snva3,LOW); digitalWrite(snva4,LOW);break; case 0011:digitalWrite(snva1,HIGH);digitalWrite(snva2,HIGH); digitalWrite(snva3,LOW); digitalWrite(snva4,LOW);break; case 0100:digitalWrite(snva1,LOW);digitalWrite(snva2,LOW);digitalWrite(snva3,HIGH); digitalWrite(snva4,LOW);break; case 0101:digitalWrite(snva1,HIGH);digitalWrite(snva2,LOW);digitalWrite(snva3,HIGH); digitalWrite(snva4,LOW);break; case 0110:digitalWrite(snva1,LOW);digitalWrite(snva2,HIGH);digitalWrite(snva3,HIGH); digitalWrite(snva4,LOW);break; case 0111:digitalWrite(snva1,HIGH);digitalWrite(snva2,HIGH);digitalWrite(snva3,HIGH); digitalWrite(snva4,LOW);break; case 1000:digitalWrite(snva1,LOW);digitalWrite(snva2,LOW);digitalWrite(snva3,LOW); digitalWrite(snva4,HIGH);break; case 1001:digitalWrite(snva1,HIGH);digitalWrite(snva2,LOW);digitalWrite(snva3,LOW); digitalWrite(snva4,HIGH);break; case 1010:digitalWrite(snva1,LOW);digitalWrite(snva2,HIGH);digitalWrite(snva3,LOW); digitalWrite(snva4,HIGH);break; case 1011:digitalWrite(snva1,HIGH);digitalWrite(snva2,HIGH);digitalWrite(snva3,LOW); digitalWrite(snva4,HIGH);break; case 1100:digitalWrite(snva1,LOW);digitalWrite(snva2,LOW);digitalWrite(snva3,HIGH); digitalWrite(snva4,HIGH);break; case 1101:digitalWrite(snva1,HIGH);digitalWrite(snva2,LOW);digitalWrite(snva3,HIGH); digitalWrite(snva4,HIGH);break; case 1110:digitalWrite(snva1,LOW);digitalWrite(snva2,HIGH);digitalWrite(snva3,HIGH); digitalWrite(snva4,HIGH);break; case 1111:digitalWrite(snva1,HIGH);digitalWrite(snva2,HIGH);digitalWrite(snva3,HIGH); digitalWrite(snva4,HIGH);break; } }

最后可以通过目标不同 编写不同的主程序代码 实现不同的操控,实现微流控的注射。

4.总结

本次的设计主要是用于博士师姐的生物实验的前期 由实验室师兄共同完成微流控注射的硬件和软件设计。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3